package com.yugao.fintech.libra.auth.model.entity;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.yugao.fintech.libra.common.model.BasePO;
import com.yugao.fintech.libra.common.tenant.core.DataIsolation;
import com.yugao.fintech.framework.core.annotations.FieldUnique;
import com.yugao.fintech.framework.core.annotations.FieldUniqueConfig;
import com.yugao.fintech.framework.core.enums.SqlConditionTypeEnum;
import lombok.*;

/**
 * 第三方用户体系授权
 */
@Data
@Builder
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor
@NoArgsConstructor
@TableName("auth_third_user")
@FieldUniqueConfig(tableId = "auth_id", entityId = "authId", sqlCondition = SqlConditionTypeEnum.AND)
@DataIsolation(filterTenant = true, tableName = "user_third_auth")
public class SocialUser extends BasePO {
    @TableId
    private Long authId;

    /**
     * 关联的用户id
     */
    private Long userId;

    /**
     * 第三方用户唯一标识
     */
    @FieldUnique(message = "第三方标识已存在")
    private String openId;

    /**
     * 第三方平台标识(qq-1、wechat-2)
     */
    @FieldUnique(message = "第三方标识已存在")
    private String source;

    /**
     * 第三方获取的access_token,校验使用
     */
    private String accessToken;

    /**
     * 应用类型
     *
     * @see com.yugao.fintech.libra.common.model.constants.AppType
     */
    private String appType;


    public static LambdaQueryWrapper<SocialUser> lqw() {
        return Wrappers.lambdaQuery();
    }
}
